package persistence;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import model.Cidade;
import model.Estado;


public class CidadeDaoImpl implements CidadeDao {
	Connection c;

	public CidadeDaoImpl() {
		GenericDao gDao = new GenericDao();
		c = gDao.getConnection();
	}

	@Override
	public void salvaCidade(Cidade cidade) throws SQLException {
		String sql = "INSERT INTO Cidades VALUES (?,?)";
		PreparedStatement ps = c.prepareStatement(sql);

		ps.setInt(1, cidade.getIdCidade());
		ps.setString(2, cidade.getCidade());

		ps.execute();
		ps.close();

	}

	@Override
	public void editaCidade(Cidade cidade) throws SQLException {
		String sql = "UPDATE Cidades SET cidade = ? WHERE idCidade = ?";
		PreparedStatement ps = c.prepareStatement(sql);
		ps.setString(1, cidade.getCidade());
		ps.setInt(2, cidade.getIdCidade());
		ps.execute();
		ps.close();

	}

	@Override
	public void excluiCidade(Cidade cidade) throws SQLException {
		String sql = "DELETE Cidades WHERE idCidade = ?";
		PreparedStatement ps = c.prepareStatement(sql);
		ps.setInt(1, cidade.getIdCidade());
		ps.execute();
		ps.close();

	}

	@Override
	public Cidade pesquisaCidade(Cidade cidade) throws SQLException {
		Cidade cid = new Cidade();
		String sql = "SELECT idCidade, cidade FROM Cidades WHERE idCidade = ?";
		PreparedStatement ps = c.prepareStatement(sql);
		ps.setInt(1, cidade.getIdCidade());
		ResultSet rs = ps.executeQuery();
		if (rs.next()) {
			cid.setIdCidade(rs.getInt("idCidade"));
			cid.setCidade(rs.getString("cidade"));

		}
		ps.close();
		rs.close();
		return cid;
	}
	
	
	public List<Estado> listaEstados() throws SQLException {
		List<Estado> lista = new ArrayList<Estado>();
		String sql = "SELECT estado FROM Estados ORDER BY estado";
		PreparedStatement ps = c.prepareStatement(sql);
		ResultSet rs = ps.executeQuery();
		while (rs.next()){
			Estado m = new Estado();
			m.setEstado(rs.getString("estado"));
			lista.add(m);
		}
		ps.close();
		rs.close();
		return lista;
	}
	

}
